package br.com.abelha.manager;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import br.com.abelha.manager.db.DAOFichaB;
import br.com.abelha.manager.entity.FichaBGES;
import br.com.abelha.manager.entity.Pessoa;

public class FichaBGestante extends Activity {

	RadioButton radionutricional, radioacima6gestacoes, radiohistoricoaborto,
			radioacima36anos, radioabaixo20anos, radiosangramento, radioedema,
			radiodiabetes, radiopressaoalta, radioresultadogestacao;

	EditText dataMenstruacao, datavacina1, datavacina2, datavacina3,
			datavacinareforco, dataconsulta, localparto, dataconsulta1,
			dataconsulta2, dataConsulta;
	
	TextView provavelDataParto;

	private int year, month, day;

	Pessoa pessoa;
	Button pickDate;
	Button salvar, cancelar;
	
	Button calcularDataPartoButton;

	public Date calDataParto(Date dataMenstruacao) {
		Calendar cal = Calendar.getInstance();

		cal.setTime(dataMenstruacao);

		cal.add(Calendar.DAY_OF_YEAR, 14);

		Calendar dataFecundacao = cal;
		dataFecundacao.add(Calendar.WEEK_OF_YEAR, 38);

		return dataFecundacao.getTime();

	}

	private OnClickListener listenerSalvar = new OnClickListener() {
		public void onClick(View v) {

			if (!camposNulosENaoPreenchidos()) {
				salvarFichaDibete();
				AlertDialog.Builder builder = new AlertDialog.Builder(
						FichaBGestante.this);
				builder.setTitle("PFS");
				builder.setMessage("Ficha Gestante Salva com sucesso");
				builder.setPositiveButton("OK",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								retorneAEscolha();
							}
						});

				builder.show();

			} else {
				exibirMensagem("PFS", "Favor preencher todos os campos");
			}
		}

	};
	private OnClickListener listenerCancelar = new OnClickListener() {
		public void onClick(View v) {
			Intent i = new Intent(FichaBGestante.this, MenuFichas.class);
			startActivity(i);
		}

	};

	private OnClickListener listenerCalcular = new OnClickListener() {
		public void onClick(View v) {
			carregarDataParto();
		}

	};

	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.ficha_gestante);

		pessoa = (Pessoa) getIntent().getSerializableExtra(
				"br.com.abelha.manager.entity.Pessoa");

		dataConsulta = (EditText) findViewById(R.id_gestante.edit_dataconsulta);

		radionutricional = (RadioButton) findViewById(R.id_gestante.est_nutricional_1);
		
		calcularDataPartoButton = (Button) findViewById(R.id_gestante.calcular_button);
		calcularDataPartoButton.setOnClickListener(listenerCalcular);
 
		radioacima6gestacoes = (RadioButton) findViewById(R.id_gestante.acima_36_anos_1);
		radiohistoricoaborto = (RadioButton) findViewById(R.id_gestante.hist_aborto_1);
		radioacima36anos = (RadioButton) findViewById(R.id_gestante.acima_36_anos_1);

		radioabaixo20anos = (RadioButton) findViewById(R.id_gestante.abaixo_20_anos_1);
		radiosangramento = (RadioButton) findViewById(R.id_gestante.sangramento_1);
		radioedema = (RadioButton) findViewById(R.id_gestante.edema_1);
		radiodiabetes = (RadioButton) findViewById(R.id_gestante.diabetes_1);

		radiopressaoalta = (RadioButton) findViewById(R.id_gestante.pressao_alta_1);
		radioresultadogestacao = (RadioButton) findViewById(R.id_gestante.resultado_gestacao_1);

		dataMenstruacao = (EditText) findViewById(R.id_gestante.edit_datamestruacao);
		provavelDataParto = (TextView) findViewById(R.id_gestante.lbl_dataparto);
		datavacina1 = (EditText) findViewById(R.id_gestante.edit_data_dose1_vacina);
		datavacina2 = (EditText) findViewById(R.id_gestante.edit_data_dose2_vacina);
		datavacina3 = (EditText) findViewById(R.id_gestante.edit_data_dose3_vacina);
		datavacinareforco = (EditText) findViewById(R.id_gestante.edit_data_dose_vacina_reforco);
		dataconsulta = (EditText) findViewById(R.id_gestante.edit_dataconsulta);
		localparto = (EditText) findViewById(R.id_gestante.edit_local_parto);
		dataconsulta1 = (EditText) findViewById(R.id_gestante.edit_data_consulta1_parto);
		dataconsulta2 = (EditText) findViewById(R.id_gestante.edit_data_consulta2_parto);

		final Calendar cal = Calendar.getInstance();
		year = cal.get(Calendar.YEAR);
		month = cal.get(Calendar.MONTH);
		day = cal.get(Calendar.DAY_OF_MONTH);

		dataConsulta.setText(new StringBuilder().append(day).append('-')
				.append(month + 1).append('-').append(year));

		salvar = (Button) findViewById(R.id_gestante.Button_Save);
		cancelar = (Button) findViewById(R.id_gestante.Button_Cancelar);

		salvar.setOnClickListener(listenerSalvar);
		cancelar.setOnClickListener(listenerCancelar);


	}

	protected void carregarDataParto() {
		
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			String dt = dataMenstruacao.getText().toString();

			Date d = sdf.parse(dt);
			String s = sdf.format(calDataParto(d));
			provavelDataParto.setText(s);
			
		} catch (Exception e) {
			exibirMensagem("PFS", "Erro ao calcular data. Verifique se o formato esta correto. Ex. DD/MM/AAAA");
		}
		
	}

	public boolean camposNulosENaoPreenchidos() {

		return false;
	}

	protected void retorneAEscolha() {
		Intent i = new Intent(FichaBGestante.this, MenuFichas.class);
		startActivity(i);

	}

	public void exibirMensagem(String titulo, String mensagem) {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle(titulo);
		builder.setMessage(mensagem);
		builder.setNeutralButton("OK", null);
		builder.show();
	}

	protected void salvarFichaDibete() {

		DAOFichaB<FichaBGES> daoFichaB = new DAOFichaB<FichaBGES>(this);
		FichaBGES FichaBGES = new FichaBGES();

		try {

			FichaBGES.setId_fichaA(pessoa.getId_fichaA());
			FichaBGES.setId_paciente(pessoa.getId());

			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

			FichaBGES.setDt_ultimda_regra(dataMenstruacao.getText().toString());

			FichaBGES.setDt_provavel_parto(sdf.format(calDataParto(sdf
					.parse(dataMenstruacao.getText().toString()))));

			FichaBGES.setData_vacina_dose1(datavacina1.getText().toString());

			FichaBGES.setData_vacina_dose2(datavacina2.getText().toString());

			FichaBGES.setData_vacina_dose3(datavacina2.getText().toString());

			FichaBGES.setData_vacina_doser(datavacinareforco.getText()
					.toString());

			String nutricional = "Nao";
			if (radionutricional.isChecked()) {
				nutricional = "Sim";
			}

			FichaBGES.setEstado_nutricional_mes1(nutricional);

			FichaBGES.setDt_consulta_prenatal_mes1(dataconsulta.getText()
					.toString());

			String acima6gestacoes = "Nao";
			if (radioacima36anos.isChecked()) {
				acima6gestacoes = "acima6gestacoes";
			}

			FichaBGES.setFat_risco_20anos(acima6gestacoes);

			String histaborto = "Nao";
			if (radiohistoricoaborto.isChecked()) {
				histaborto = "Sim";
			}

			FichaBGES.setFat_risco_natimorto_aborto(histaborto);

			String acima36anos = "Nao";
			if (radioacima36anos.isChecked()) {
				acima36anos = "Sim";
			}

			FichaBGES.setFat_risco_36anos(acima36anos);

			String abaixo20anos = "Nao";
			if (radioabaixo20anos.isChecked()) {
				abaixo20anos = "Sim";
			}

			FichaBGES.setFat_risco_20anos(abaixo20anos);

			String sangramento = "Nao";
			if (radiosangramento.isChecked()) {
				sangramento = "Sim";
			}

			FichaBGES.setFat_risco_sangramento(sangramento);

			String edema = "Nao";
			if (radioedema.isChecked()) {
				edema = "Sim";
			}

			FichaBGES.setFat_risco_edema(edema);

			String diabetes = "Nao";
			if (radiodiabetes.isChecked()) {
				diabetes = "Sim";
			}

			FichaBGES.setFat_risco_diabetes(diabetes);

			String pressaoalta = "Nao";
			if (radiopressaoalta.isChecked()) {
				pressaoalta = "Sim";
			}

			FichaBGES.setFat_risco_pressao_alta(pressaoalta);

			String resultadogestacao = "Nao";
			if (radioresultadogestacao.isChecked()) {
				resultadogestacao = "Sim";
			}

			FichaBGES.setRes_get(resultadogestacao);
			
			daoFichaB.delete(FichaBGES);
			daoFichaB.insert(FichaBGES);
			

		} catch (Throwable e) {
			e.printStackTrace();
		}

	}

	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case 1:
			return new DatePickerDialog(this, dateListener, year, month, day);

		}
		return null;

	}

	private DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() {

		@Override
		public void onDateSet(DatePicker view, int yr, int monthOfYear,
				int dayOfMonth) {
			year = yr;
			month = monthOfYear;
			day = dayOfMonth;
			updateDate();
		}
	};

	private void updateDate() {
		dataConsulta.setText(new StringBuilder().append(day).append('-')
				.append(month + 1).append('-').append(year));

	}

}
